package com.ultimatech.webappdemo.authmgr.dao;


import com.ultimatech.webappdemo.authmgr.vo.GroupVo;
import com.ultimatech.webappdemo.authmgr.vo.PermsVo;
import com.ultimatech.webappdemo.authmgr.vo.RoleVo;
import com.ultimatech.webappdemo.authmgr.vo.UserVo;
import com.ultimatech.webappdemo.base.PageResult;
import com.ultimatech.webappdemo.base.model.*;

import java.util.List;

/**
 * Created by 张乐平 on 7/28 0028.
 */
public interface IAuthDao {

    SysUser findByName(String name);
    List<SysAuthcMap> getAllAuthcMap();

    /**
     * 查询用户表所有数据，或者根据用户名检索用户
     * @return 返回带翻页参数的结果
     */
    PageResult<SysUser> getAllUsers(UserVo vo);

    /**
     * 查询所有角色信息
     * @return 返回角色列表
     */
    List<SysRole> getAllRoles();

    /**
     * 添加用户数据
     * @param user
     * @return
     */
    void saveOrUpdateUser(SysUser user);

    SysRole findRoleByName(String roleName);

    /**
     * 根据用户id查找用户
     * @param userId
     * @return
     */
    SysUser findUserById(Integer userId);

    /**
     * 删除用户数据
     * @param user
     */
    void delUser(SysUser user);

    /**
     * 查询角色表所有数据，或者根据角色名检索角色
     * @return 返回带翻页参数的结果
     */
    PageResult<SysRole> getAllRoles(RoleVo vo);

    int saveOrUpdateRole(SysRole role);
    void saveOrUpdatePermission(SysMyPermission myPermission);
    /**
     * 根据角色id查找角色
     * @param roleId
     * @return
     */
    SysRole findRoleById(Integer roleId);
    /**
     * 判断权限是否重复
     */
    boolean RepeatPermission(SysMyPermission myPermission);
    /**
     * 删除权限数据
     * @param myPermission
     */
    void delPermission(SysMyPermission myPermission);
    /**
     * 删除角色数据
     * @param role
     */
    void delRole(SysRole role);

    /**
     * 修改授权
     * @param myPermission
     */
    void updatePerms(SysMyPermission myPermission);

    /**
     * 删除授权
     * @param myPermission
     */
    void delPerms(SysMyPermission myPermission);

    PageResult<SysMyPermission> getAllPerm(PermsVo vo);
    SysMyPermission findPermById(Integer roleId);
    void delPerm(SysMyPermission id);

    void insertGroup(SysGroup group);

    void saveOrUpdateAuthcMap(SysAuthcMap map);

    PageResult<SysGroup> getAllGroups(GroupVo vo);

    public void saveOrUpdateObj(Object obj);

    SysGroup getGroupByName(String name);



}
